package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.Adaccount;
import com.tbit.uqbike.object.pojo.AdvertConfig;
import com.tbit.uqbike.object.pojo.vo.AdvertConfigAdAccount;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author chenmengran
 * @Description: 运营区域广告
 * @date 2020\1\7 000714:32
 */
public interface AdaccountDao {

    /**
     * 分页查询运营区域广告
     *
     * @return
     */
    List<Adaccount> queryPage(Map<String, Object> params);

    /**
     * 获取总数
     *
     * @param params
     * @return
     */
    Integer getTotal(Map<String, Object> params);

    /**
     * 添加
     *
     * @param params
     */
    void insert(Map<String, Object> params);

    /**
     * 根据主键获取广告
     *
     * @param adId
     * @return
     */
    Adaccount getById(Integer adId);

    /**
     * 删除广告
     *
     * @param adId
     */
    void del(Integer adId);

    void update(Map<String, Object> params);

    List<AdvertConfig> getAdvertConfig(Map<String, Object> params);

    Integer updateAdvertConfig(Map<String, Object> params);

    void insertAdvertConfig(AdvertConfig advertConfig);

    /**
     * 根据品牌id查询品牌下配置了区域广告配置的区域
     *
     * @param accountId
     * @return
     */
    List<AdvertConfigAdAccount> queryAdvertConfigAdAccount(@Param("accountId") Integer accountId);

    /**
     * 删除广告配置
     *
     * @param accountId
     */
    void deleteAdvertConfig(@Param("accountId") Integer accountId);

    /**
     * 更新广告配置
     *
     * @param type
     * @param title
     * @param remark
     * @param startTime
     * @param endTime
     * @param endTime
     * @param adId
     */
    void updateAdvert(@Param("type") Integer type, @Param("title") String title, @Param("remark") String remark, @Param("startTime") Date startTime, @Param("endTime") Date endTime, @Param("adId") Integer adId, @Param("openURL") String openURL);


    /**
     * 查询所有区域广告配置
     *
     * @return
     */
    List<AdvertConfig> selectAllAdAccountAdvertConfig();

    /**
     * 更新区域广告配置id跟随品牌id走
     *
     * @param accountId
     * @param advertType
     * @param advertPosition
     */
    void updateToFollowBrand(@Param("accountId") Integer accountId, @Param("advertType") Integer advertType, @Param("advertPosition") Integer advertPosition);

    /**
     * 根据类型查询广告
     * @param type 广告类型
     * @return 广告列表
     */
    List<Adaccount> selectListByType(Integer type);
}
